//Definition for singly-linked list.
function ListNode(val) {
    this.val = val;
    this.next = null;
}

// /**
//  * @param {ListNode} headA
//  * @param {ListNode} headB
//  * @return {ListNode}
//  */
// var getIntersectionNode = function (headA, headB) {
//     let mySet=new Set()
//     while(headA!==null){
//         mySet.add(headA)
//         headA=headA.next
//     }
//     while(headB!==null){
//         if(mySet.has(headB)){
//             return headB
//         }
//         headB=headB.next
//     }
//     return null
// };

/**
 * @param {ListNode} headA
 * @param {ListNode} headB
 * @return {ListNode}
 */
var getIntersectionNode = function (headA, headB) {
    let p = headA
    let q = headB
    while (p !== q) {
        p = p ? p.next : headB
        q = q ? q.next : headA
    }
    return p

};